package org.hank.compose_yyzs.http.bean

import com.google.gson.annotations.Expose
import com.google.gson.annotations.SerializedName

//  ┏┓　　　┏┓
//┏┛┻━━━┛┻┓
//┃　　　　　　　┃
//┃　　　━　　　┃
//┃　┳┛　┗┳　┃
//┃　　　　　　　┃
//┃　　　┻　　　┃
//┃　　　　　　　┃
//┗━┓　　　┏━┛
//    ┃　　　┃                  神兽保佑
//    ┃　　　┃                  永无BUG！
//    ┃　　　┗━━━┓
//    ┃　　　　　　　┣┓
//    ┃　　　　　　　┏┛
//    ┗┓┓┏━┳┓┏┛
//      ┃┫┫　┃┫┫
//      ┗┻┛　┗┻┛
/**
 *@auth: Hank
 *邮箱: cs16xiaoc1@163.com
 *创建时间: 2023/8/17 17:39
 *描述:
 */
class HttpWrapBean<T>(
    @Expose @SerializedName("code") var code: String? = null,
    @Expose @SerializedName("message",alternate = ["msg","error"]) var message: String? = null,
    @Expose @SerializedName("data") var data: T
) : IHttpWrapBean<T> {

    companion object {
        private const val CODE_SERVER_SUCCESS = 0

        fun <T> success(data: T): HttpWrapBean<T> {
            return HttpWrapBean(CODE_SERVER_SUCCESS.toString(), "success", data)
        }

        fun <T> failed(data: T,faildMsg:String): HttpWrapBean<T> {
            return HttpWrapBean("-200", faildMsg, data)
        }

    }

    override val httpCode: Int
        get() = if(code == null) -200 else code!!.toIntOrNull()?:-200

    override val httpMsg: String
        get() = message ?: ""

    override val httpData: T
        get() = data

    override val httpIsSuccess: Boolean
        get() = code == CODE_SERVER_SUCCESS.toString() || message == "OK"

    override fun toString(): String {
        return "HttpResBean(code=$code, message=$message, data=$data)"
    }

}
